package datastructure.ch02_arrays.ch02_create;

/**
 * 数组的基本构成
 *
 * @author guodd
 * @version 1.0
 * data存储数据、size已经占用的数据容量、capacity数据容量、位序从1开始、数组下标0开始
 * 01、线性表（相同类型、有限序列）
 * 02、索引有语意
 */
public class Array {
    // 默认容积
    private static final int DEFAULT_CAPACITY = 10;

    // data属性表示存放数组的元素，因为该部分没有涉及到操作elements所以使用final修饰
    private final int[] elements;

    // 数组中实际元素的个数（特别注意不是索引，size=index+1）
    private int size;

    // 无参数的构造函数，默认数组的容量capacity=10
    public Array() {
        // data = new int[10];
        this(DEFAULT_CAPACITY);
    }

    // 构造函数，传入数组的容量capacity构造Array
    public Array(int capacity) {
        capacity = Math.max(capacity, DEFAULT_CAPACITY);
        elements = new int[capacity];
        size = 0;
    }

    // 获取数组的容量
    public int getCapacity() {
        return elements.length;
    }

    // 获取数组中的元素个数
    public int getSize() {
        return size;
    }

    // 返回数组是否为空
    public boolean isEmpty() {
        return size == 0;
    }

    // 清除元素
    public void clear() {
        // 思考？为什么不清空数据元素，不浪费空间吗？
        size = 0;
    }

    public static void main(String[] args) {
        Array array = new Array(-100);
        System.out.println(array.isEmpty());
        System.out.println(array.getCapacity());
        System.out.println(array.getSize());
        array.clear();
    }
}
